home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Czech Logic, Card & Gambling Games
/
Logické hry.iso
/
hry
/
Fish Fillets
/
script
/
bathyscaph
/
code.lua
next >
Wrap
Text File
|
2005-07-16
|
14KB
|
379 lines
-- -----------------------------------------------------------------
-- Init
-- -----------------------------------------------------------------
local function prog_init()
initModels()
sound_playMusic("music/rybky07.ogg")
local pokus = getRestartCount()
local main = {}
local roompole = createArray(2)
-- -------------------------------------------------------------
local function prog_init_room()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
room.aktivni = main
room.poc = random(50 + pokus) + 100
room.halo = 0
room.mikros = 0
room.nemam = 200
room.odsud = 0
room.pronej = 10 + random(50)
room.uhnu = 500 + random(500)
room.teduz = 0
return function()
switch(room.aktivni){
[main] = function()
if room.poc > 0 then
room.poc = room.poc - 1
else
pomb1 = zluty.X == ztel.X and zluty.Y + 3 == ztel.Y
pomb2 = modry.X == mtel.X and modry.Y + 3 == mtel.Y
room.poc = random(80) + 50
room.zvon = 0
if pomb1 then
if pomb2 then
if odd(random(10)) then
room.aktivni = zluty
else
room.aktivni = modry
end
else
room.aktivni = zluty
end
elseif pomb2 then
room.aktivni = modry
else
room.aktivni = ibudik
end
end
end,
[zluty] = function()
if room.poc == 0 then
zluty:killSound()
room.poc = random(30) + 30
room.aktivni = main
zluty.afaze = 0
else
room.poc = room.poc - 1
if room.pronej > 0 then
room.pronej = room.pronej - 1
end
if zluty.X == ztel.X and zluty.Y + 3 == ztel.Y then
if zluty:isTalking() then
room.zvon = room.zvon + 1
if odd(room.zvon) then
zluty.afaze = 1
else
zluty.afaze = 2
end
elseif room.zvon > 0 then
room.zvon = room.zvon - 1
zluty.afaze = 0
else
zluty:talk("bat-t-phone0", VOLUME_FULL)
end
else
zluty:killSound()
zluty.afaze = 0
room.aktivni = ztel
room.halo = 1
end
end
zluty:updateAnim()
end,
[modry] = function()
if room.poc == 0 then
modry:killSound()
room.poc = random(30) + 30
room.aktivni = main
modry.afaze = 0
else
room.poc = room.poc - 1
if room.pronej > 0 then
room.pronej = room.pronej - 1
end
if modry.X == mtel.X and modry.Y + 3 == mtel.Y then
if modry:isTalking() then
room.zvon = room.zvon + 1
if odd(room.zvon) then
modry.afaze = 1
else
modry.afaze = 2
end
elseif room.zvon > 0 then
room.zvon = room.zvon - 1
modry.afaze = 0
else
modry:talk("bat-t-phone1", VOLUME_FULL)
end
else
modry:killSound()
modry.afaze = 0
room.aktivni = mtel
room.halo = 1
end
end
modry:updateAnim()
end,
[ztel] = function()
if room.halo ~= 2 then
room.aktivni = main
room.poc = random(100) + 30
end
end,
[mtel] = function()
if room.halo ~= 2 then
room.aktivni = main
room.poc = random(100) + 30
end
end,
[ibudik] = function()
if room.poc > 0 then
room.poc = room.poc - 1
elseif not ibudik:isTalking() then
ibudik:talk("bat-t-budik", VOLUME_FULL, -1)
elseif ibudik.dir ~= dir_no then
ibudik:killSound()
room.aktivni = -1
end
end,
}
if room.halo == 1 then
room.halo = 2
if pokus > 5 then
pom1 = random(11)
else
pom1 = random(8)
end
local bin_table = {}
switch(pom1){
[0] = function()
bin_table[0] = true
bin_table[1] = true
end,
[1] = function()
bin_table[0] = true
bin_table[2] = true
bin_table[4] = true
end,
[2] = function()
bin_table[0] = true
bin_table[3] = true
end,
[3] = function()
bin_table[5] = true
end,
[4] = function()
bin_table[4] = true
bin_table[5] = true
end,
[5] = function()
bin_table[1] = true
bin_table[2] = true
end,
[6] = function()
bin_table[0] = true
bin_table[3] = true
bin_table[4] = true
end,
[7] = function()
bin_table[1] = true
end,
default = function()
bin_table = {}
end,
}
if bin_table[0] then
room:planDialog(5, "bat-p-0")
end
if bin_table[1] then
room:planDialog(5, "bat-p-1")
end
if bin_table[2] then
room:planDialog(5, "bat-p-2")
end
if bin_table[3] then
room:planDialog(5, "bat-p-3")
end
if bin_table[5] then
room:planDialog(5, "bat-p-5")
end
if bin_table[4] then
room:planDialog(5, "bat-p-4")
end
if countPairs(bin_table) == 0 then
room:planDialog(5, "bat-p-zhov"..random(2))
end
planSet(room, "halo", 0)
end
if no_dialog() and isReady(small) and isReady(big) then
if game_getCycles() == 20 and random(pokus) < 3 then
addm(5, "bat-m-tohle")
elseif room.mikros == 0 and dist(small, mikroskop) < 3 and mikroskop.dir ~= dir_no and random(10) == 1 then
room.mikros = 1
addm(6, "bat-m-mikro")
elseif room.odsud == 0 and zluty.X > 32 and dist(small, zluty) < 4 and random(30) == 1 then
room.odsud = 1
addm(7, "bat-m-sluch")
elseif room.teduz == 0 and room.aktivni == -1 and random(70) == 1 then
room.teduz = 1
addv(8, "bat-v-klid")
elseif room.nemam > 0 then
room.nemam = room.nemam - 1
else
switch(room.aktivni){
[ibudik] = function()
if random(100) == 1 then
room.nemam = 200 + random(200)
addv(1, "bat-v-vyp")
end
end,
default = function()
if room.aktivni == zluty or room.aktivni == modry then
if random(100) == 1 then
room.nemam = 200 + random(200)
if dist(small, room.aktivni) < dist(big, room.aktivni) then
addv(1, "bat-v-zved1")
else
addv(1, "bat-v-zved0")
end
end
end
end,
}
end
end
if no_dialog() then
if room.pronej == 0 and (room.aktivni == zluty or room.aktivni == modry) and random(30) == 1 then
room.pronej = random(100)
planDialogSet(3, "bat-s-prome"..random(3), 111, snek, "mluvi")
elseif room.uhnu == 0 and (room.aktivni == -1 or room.poc > 30 and room.aktivni == main) then
room.uhnu = 300 + random(300)
pom2 = random(4)
if pom2 ~= 1 or roompole[1] > 0 then
planDialogSet(12, "bat-s-snek"..pom2, 111, snek, "mluvi")
end
roompole[1] = roompole[1] + 1
end
end
if room.uhnu > 0 then
room.uhnu = room.uhnu - 1
end
end
end
-- -------------------------------------------------------------
local function prog_init_dhled()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
dhled.padal = 0
return function()
if dhled.padal == 4 then
dhled.afaze = 0
dhled.padal = 0
elseif dhled.padal == 3 then
dhled.padal = 4
elseif dhled.padal == 2 then
dhled.padal = 3
elseif dhled.dir == dir_down then
dhled.padal = 1
elseif dhled.padal == 1 then
dhled.afaze = 1
dhled.padal = 2
end
dhled:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_snek()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
snek.mluvi = 0
return function()
if odd(game_getCycles()) and snek.mluvi ~= 0 then
snek.afaze = random(2)
else
snek.afaze = 0
end
snek:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_ibudik()
return function()
if odd(game_getCycles()) and ibudik:isTalking() then
ibudik.afaze = 1
else
ibudik.afaze = 0
end
ibudik:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_mikroskop()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
mikroskop.poc = 0
return function()
if mikroskop.poc > 0 then
mikroskop.poc = mikroskop.poc - 1
else
mikroskop.afaze = random(3)
mikroskop.poc = random(6)
end
if mikroskop.dir ~= dir_no then
mikroskop.poc = 0
end
mikroskop:updateAnim()
end
end
-- --------------------
local update_table = {}
local subinit
subinit = prog_init_room()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_dhled()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_snek()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_ibudik()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_mikroskop()
if subinit then
table.insert(update_table, subinit)
end
return update_table
end
local update_table = prog_init()
-- -----------------------------------------------------------------
-- Update
-- -----------------------------------------------------------------
function prog_update()
for key, subupdate in pairs(update_table) do
subupdate()
end
end